As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications.
In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems. In order to process and manage the information, a file system may be included in the information handling system. A file system may organize information in the form of files into an easily readable hierarchy to facilitate location and retrieval of the files. To organize the files a directory may be created in a file system to group the files associated with a specific application or use in a single location. A file may include data specific to the application or use. A file system may also include one or more inodes. While a file may include the data, the inode representing the file includes specific information, called metadata, regarding file ownership, access inode (e.g., read and/or write), execute permissions, and type. The inodes of a file system may be stored in files in the file system. In addition, an inode may have an integer number assigned to it to uniquely identify the inode within the file system.
In addition, given the large amount of files that may be present within a file system of an information handling system, efficient enumeration of the files within a file system to identify files that have certain attributes may be an important process underlying many applications. Enumerating the inode information for each file to located the files with the desired attributes may be a critical part of this process. For example, in the Dell Scalable File System (dsfs), system processes such as asynchronous snapshot based replication, snapshot storage reclaiming, storage scrubbing, and deduplication crawling processes use inode enumeration. These processes may involve the backup of data, the restoration of data, or the removal of stale data. In general, “backup” refers to making copies of data so that the additional copies may be used to restore an original set of data after a data loss event. For example, data backup may be useful to restore an information handling system to an operational state following a catastrophic loss of data (sometimes referred to as “disaster recovery”). In addition, data backup may be used to restore individual files after they have been corrupted or accidentally deleted.
The most common method for file enumeration may be performed by directory traversal. However, because each file within the file system may be created at different points in time and by different users, the order of traversal may not reflect the location of inodes on the disk. This creates an inefficiency that impacts access time and speed of enumeration. In addition, in some file systems (e.g., clustered file systems), consecutive objects enumerated through directory traversal may be located on separate storage devices, thus creating even more inefficiencies.
In addition sequentially enumerating the inodes in an inode file has similar issue with inefficiency. As the data in the file system of the information handling system increases, the inode files may become fragmented and slow due to the time and number of operations required to access the fragments on disk.
Accordingly, a need has arisen for systems and methods that efficient inode enumeration of file systems in an information handling systems.